home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr25 / mr2_143.zip / READ.ME < prev    next >
Text File  |  1993-06-05  |  74KB  |  1,520 lines

  1. MR/2 - A QWK Compatible Mail Reader for OS/2.  03/22/93
  2.  
  3. Copyright (c) 1992, Knight Writer Software Company.
  4. All rights reserved.
  5.  
  6. ===================================================================
  7.                           N O T I C E
  8. ===================================================================
  9. This IS a shareware package, and does require a registration fee if
  10. you choose to continue using it after 30 days.   The registration
  11. fee is currently $20 US.  Eventually, the product MAY have a
  12. "begging" screen with a key-file that will register the software
  13. and suppress it.  The more interest I get, the more likely I am to
  14. continue with improvements.
  15. ------------------------------------------------------------------
  16.  
  17. NOTES:
  18.  
  19. RE: Complaints about crashing with the E editor.
  20.  
  21. I can't for the life of me figure this out.  I've been personally using E
  22. for replies for 2-3 weeks now, and it works just fine.  I don't like it, but
  23. it works OK.  My suggestion:  get TINY ED for OS/2 or TE.  I'm working on
  24. my own editor, either built-in or external, but it isn't hi-pri right now.
  25.  
  26.  
  27. RE: Failures when trying to return to previous reading position.
  28.  
  29. This is pretty simple code, but there is a big problem.  If you happen to
  30. be downloading while you're reading, and your comm program renames packets
  31. automatically, MR/2 may be setting the bookmark EA's on the wrong file.
  32. For example, if I'm reading NerdNook.qwk and at the same time I start to
  33. dowload a new packet from them using ZModem, the packet I'm actually reading
  34. gets renamed to "whatever" and I've still got a packet NerdNook.Qwk, it just
  35. isn't the right one.  When I close the packet, MR/2 writes the bookmark file
  36. to the new, incorrect packet's EA's.  If the "last position" happends to
  37. be past the end of file or out of the new conference's bounds, an error
  38. will be reported.
  39.  
  40. I'm open for suggestions here; I could check the date/size of the original
  41. file vs. the "new" file and warn if they don't match - or try to find the
  42. original.  The warning is easy, trying to find the original file doesn't
  43. sound that interesting to me :)
  44.  
  45.  
  46. CONTACTING THE AUTHOR
  47. =====================
  48.  
  49. You  can contact me in a number  of ways.  Unfortunately, I can't
  50. provide a phone number at this time.
  51.  
  52. US Mail:       Nick Knight
  53.                1823 David Ave.
  54.                Parma, Ohio 44134
  55.  
  56. Fido netmail:  1:157/2 to "Nick Knight"
  57.  
  58. Internet:      User "Nick Knight", (nick.knight@pcohio.com)
  59.  
  60. Fido Echomail: Echomail messages to  me are discouraged,  as
  61.                keeping  them "on  topic" and  interesting to
  62.                the  masses would  be difficult.   I  do read
  63.                OS2,  OS2PROG,  C_PLUSPLUS and DR DEBUG daily,
  64.                though.   OFFLINE  echo also  (deals with mail
  65.                readers), this might be THE place to ask public
  66.                questions, eh?
  67.  
  68.                I recently have acquired access to a host of other
  69.                networks with OS/2 conferences.  These include RIME,
  70.                SmartNet, Uninet and some others I can't remember.
  71.  
  72.  
  73. Direct BBS:    Leave  a  message  on  the  Nerd's  Nook  BBS
  74.                (1:157/2)  at  (216)  356-1772,  356-1872  or
  75.                356-1431.   I check in here  multiple times a
  76.                day.  I  will also keep the most  recent copy
  77.                of   MR/2  posted   here.      Other   boards
  78.                (non-local)   will   get   updates    at   my
  79.                convenience.
  80.  
  81.                Nerd's does support file requests (157/2 or 157/3)
  82.  
  83.                Optionally, I call into PC-OHIO regularly.
  84.  
  85. Compuserve:    I check in  here only  when I have  to.   Try
  86.                mail to  my  user ID  - 76066,1240,  although
  87.                this isn't the best approach.
  88.  
  89.  
  90.  
  91. KNOWN BUGS AND STUFF
  92. ====================
  93.  
  94. Mouse support is missing from some of the "inform user" screen.
  95.  
  96. The TEMPORARY directory MUST remain a subdirectory of the MR2 home dir.
  97.  
  98. You can't use "\" or "&" as part of any search text (since MR/2 uses them
  99. as delimiters).
  100.  
  101. You can't cancel a search until the first "hit" is displayed.  This is
  102. particularly irritating when soundex searching, since soundexing is
  103. noticably slower.
  104.  
  105. If you set "SkipReadMessages" to true, you cannot gain access to a
  106. conferences where all messages have previously been read.
  107.  
  108. If you don't like my internal editor.  You'll have to find your
  109. own or use E or EPM.  QEdit for OS/2 works nice as an inexpensive,
  110. character-mode editor/  Also, there's an OS/2 editor TE-something
  111. that I heard was OK.
  112.  
  113. You can't send ADD/DROP conference messages yet.  This seems easy
  114. enough,  so I should be able to add it in soon.
  115.  
  116. Other frills that have not yet been addressed:  Bulk marking, carbon
  117. copies, twit filter, function key assigning. There are probably others.
  118. Feel free to bombard me with requests.
  119.  
  120. No long file name support.  Since QWK is a DOS thing, the only place I can
  121. see using it is for packet names (if the user renames it).  Any ideas?
  122.  
  123.  
  124. Changes included in v1.01
  125. -------------------------
  126.  
  127. o   By request, 43 and 50 line mode are now supported via a new .ini entry.
  128.     You can supply a VideoMode=xx parameter in MR2.INI, where xx can be 25,
  129.     43 or 50. Any other numbers will be ignored.  All Selection lists and
  130.     displays are adjusted to match the screen dimensions.  For those with
  131.     vision better than mine ... :)
  132.  
  133. o   Clicking the mouse on the Subject area while viewing a message still
  134.     simulated hitting the 'T' key.  This key no longer moves forward by
  135.     thread, it steals taglines.  Now, clicking on Subject is translated
  136.     properly to an 'H'.
  137.  
  138. o   When filling a field in a "form" (e.g., the Subject field of the
  139.     Message Header Edit form), overtype-mode would sometimes echo characters
  140.     that weren't there.  This happened after some characters were deleted;
  141.     the "ghost" characters appeared at the end of the string.  This is fixed.
  142.  
  143. o   The automatic splitting of long replies is now controlled via a
  144.     MR2.INI parameter SplitLongReplies (set to Yes or No).  If set to
  145.     yes, MR/2 will split replies up so that no more than 100 lines are
  146.     in each message.  If set to no, then no splitting is performed and
  147.     one large message is create.  The default is to split message.
  148.  
  149. o   Previously, long replies were always split.  The "cut-off" point was
  150.     95 message lines, and a "<cont'd>" line was appended with a blank line.
  151.     I've seen some message processors cut the first part by one lines,
  152.     making the second message consist of 1 or 2 meaningless lines.  I've
  153.     changed the "split at" number to 92 lines.
  154.  
  155. o   And another MR2.INI parameter has been added:  AllUpperCase controls
  156.     how the Subject, From and To lines are treated after editing a message's
  157.     header information.  Previously, all fields were converted to upper case.
  158.     Now, if AllUpperCase=No, the case is left as entered.  (By request...)
  159.  
  160. o   The message header editing form now allows you to "up arrow" into the
  161.     From field and modify it.  NOTE:  many BBS's will reject messages
  162.     whose FROM line do not match the user's logon name.
  163.  
  164.  
  165. Changes included in v1.02
  166. -------------------------
  167.  
  168. o   Bug fix:  User reported a problem with conference numbers showing
  169.     incorrectly.  Turns out that some packets have a single byte
  170.     conference field in the header, and the other byte used by newer mail
  171.     doors was set to a space (hex 20).  This caused conference numbers to
  172.     be report as 8192 more than their actual value.
  173.  
  174.  
  175. Changes included in v1.03
  176. -------------------------
  177.  
  178. o   Fixes to tagline logic.  If tagline file was non-existant, MR/2 would
  179.     crash.  If file was empty, added tags would not show up until you
  180.     exited and reentered.
  181.  
  182. o   Selection list problems fixed.  Highlighting of the line above displayed
  183.     list on occasion.  Selection bar will no longer move into unfilled
  184.     areas.  Scrolling up and down through list no longer displays end-of-list
  185.     "ghost" entries.
  186.  
  187. o   Added some tests for over-length taglines.  Previously, a tagline
  188.     longer than 120 character would lock the session.
  189.  
  190. o   Forms display routine would show an over-length tagline w/o truncating
  191.     it.  Display of tagline extended to column 80, then would wrap to the
  192.     next line.  This has been corrected.
  193.  
  194. o   Actually added in 1.01 is the ability, from the packet selection screen,
  195.     to toggle video modes.  The "V" key will toggle from displayed lines
  196.     from 25 to 43, from 43 to 50, and then from 50 back to 25.
  197.  
  198. o   MR/2 would lock up when saving a reply (or a new message).  This
  199.     happened only with BBS doors that would pad the user name (in control.dat)
  200.     with spaces.  The lockup occured after pressing F10 to accept the
  201.     message header information.  This shouldn't happen any more :)
  202.  
  203. o   NOTE - NOTE - NOTE:  The problem with packets proclaiming "no mail to
  204.     read" seems to be related to missing .NDX files in the packet.  The
  205.     QMAIL door in particular lets you suppress these files, and some
  206.     mail readers (SLMR/OLX) don't use them, anyway.  MR/2 requires these
  207.     file, at least today.  I WILL provide an index building function in the
  208.     very next release, figure by 5/22 worst-case.
  209.  
  210. o   OK, so I added the routine to create NDX files if they aren't there.
  211.     (See above) Testing on this was minimal, so please report any problems.
  212.     Packets without .NDX files should no longer report "no mail found".
  213.  
  214.  
  215. Changes included in v1.04
  216. -------------------------
  217.  
  218. o   You may now create a supplemental "INI" file for any/all BBS's that
  219.     you get mail from.  MR/2 still loads its options from MR2.INI, but you
  220.     may now change some of these options automatically by BBS, when a packet
  221.     is opened.  Once the packet is unpacked and the BBS "ID" is extracted,
  222.     MR/2 checks its "base" directory (where MR2.INI resides) for a file
  223.     named after the BBS, with a ".INI" suffix.  For example, after
  224.     unpacking a QWK packet from PC-OHIO, MR/2 will load options from a file
  225.     named "PC-OHIO.INI", if one exists.  Obviously, some options will have
  226.     no effect (e.g., PacketPath has already been used and is no longer
  227.     pertainent, as is WorkPath), but things like tagline files and quoting
  228.     styles can be changed on a BBS basis.
  229.  
  230.     If a "BBS" .INI file is accessed, MR/2 will reload the global MR2.INI
  231.     file when the current packet is closed.
  232.  
  233. o   New INI parameter "TagStyle" has been added.  You may specify either
  234.     FIDONET (the default) or PCBOARD.  If Fidonet is specified, taglines
  235.     will use "*" characters to delimit MR/2's signiture.  If PCBOARD
  236.     style is requested, the "block" character used by SLMR/OLX will be
  237.     substituted.
  238.  
  239. o   Read-ahead by thread (the "H" key) has been enhanced to recognize
  240.     subjects prefixed with "RE:" or "RE: " as matching.  Messages will
  241.     also match if the subject matches the original *less* the "RE:".
  242.  
  243. o   Install now includes Register.Doc for easier user registration.
  244.  
  245.  
  246. -   That's it for this revision.  I *almost* added a large section of code
  247.     for twits and canned searches, but this is going to take some time to
  248.     code and even more time to test and debug.  I'll make that available in
  249.     a week or two, along with fixes for any other reported bugs.
  250.  
  251.     BTW - a PM version is in a very primitive form, anyone interested in
  252.     giving me some useful feedback?  First, should it be MR/2 PM or MR/PM?
  253.  
  254.  
  255. Changes included in v1.1
  256. -------------------------
  257.  
  258. o   The Reference number field was not being set and maintained properly.
  259.     If you replied to a message, that message's reference number would
  260.     get copied into the replies Ref#.  Then if you would re-edit the reply
  261.     later, the Ref# would be set to the conference number.  I've now
  262.     staightened this mess out and it seems to work properly.
  263.  
  264. o   Added a new MR2.INI parameter "WrapLinesAtColumn" that defaults to 80.
  265.     This should ease the problems with users that depend on the system "E"
  266.     editor and its "word wrapping" function.  MR/2 will let no line extend
  267.     beyond the value supplied here, and will insert a CR/LF between words
  268.     to keep text in bounds.
  269.  
  270. o   You may now set the MR2.INI variable "VideoMode" any of the values
  271.     25, 28, 34, 40, 43, 50 or 60 to represent the number of lines to
  272.     display.  Also, the V toggle while on the packet select screen has
  273.     been enhanced to toggle through all of these values.
  274.  
  275. o   MR/2 now accepts one or more file names identifying .QWK packet as
  276.     command line parameters.  For example, typing:
  277.  
  278.         MR2 E:\DL\NERDNOOK.QWK
  279.  
  280.     will invoke MR/2 and automatically select the named packet for reading.
  281.     More than one packet may be specified, MR/2 simply opens the "next"
  282.     packet when the previous packet is closed.
  283.  
  284.     When all packets on the command line have been read, MR/2 returns to
  285.     the packet selection screen and waits for a new selection.  If you wish
  286.     to have MR/2 exit after all specified files have been processed, set the
  287.     INI variable "ExitAtEndOfParameters" to YES.
  288.  
  289.     This also allows for an "association" to be set up using WPS settings.
  290.     If a new ICON is created to invoke MR/2 and "*.qwk" is set as an
  291.     association, then clicking on a QWK packet inside the file manager is
  292.     all that's necessary to read a packet.
  293.  
  294. o   Cosmetic:  "Pick a Conferences" when writing a "new" message now
  295.     reads correctly.
  296.  
  297. o   Cosmetic:  when using video lines other than 25, the search status
  298.     message would update always on line 25.  This now moves with the
  299.     number of lines displayed.
  300.  
  301. o   When editing the message header, F4 may be used to select from a list
  302.     of available conferences.  This is useful when moving a message from
  303.     its source conference into another.  By request.
  304.  
  305. o   The master conference list now displays in alphabetical order by name.
  306.     Previously, conferences listed in the order they occured in the BBS's
  307.     configuration file.
  308.  
  309. o   NOW, there's a new INI parameter, "SortMasterConferences" which
  310.     defaults to NO (old-style non sorted list).  Specifying YES will
  311.     sort the master conference list alphabetically.
  312.  
  313. o   The "Z" key, used when viewing a message, now allows you to "Zip" to
  314.     the next "unread" message in a conference.
  315.  
  316. o   Threaded reading has been greatly enhanced.  First, a new INI
  317.     option must be set - "MessageOrder=Subject" (the default is "None").
  318.     This enables all sorts of new goodies :)  Basically, setting this to YES
  319.     will sort the messages by thread before reading begins.  Care was taken
  320.     to "clump" all "RE:" type messages in with their original non-RE'd
  321.     subjects.
  322.  
  323. o   If MessageOrder has been set to "Subject", some new keys are available.
  324.     While viewing messages, the TAB key will skip ahead to the next thread.
  325.     The BACKSPACE key will skip backwards to the previous thread.  Even
  326.     better, pressing "Q" will invoke the Quick Thread Summary screen.  This
  327.     list all threads in the conference, in alphabetical order, along with
  328.     the count of previously read messages vs. total message in the thread.
  329.     All threads that have been read completely are marked with an "*".
  330.     This is a full feature "selection" screen, so you can page around,
  331.     pick and peck at only the subjects that interest you.
  332.  
  333. o   I added another option - I'm not very happy with it, but you may find it
  334.     somewhat useful.  The INI parameter "ThreadChangeTone" accepts two
  335.     numeric parameters (e.g., "ThreadChangeTone=20000,10").  These parameters
  336.     are passed to the OS/2 kernel procedure DosBeep() and represent the
  337.     frequency and duration of the tone to make when you "page" into a "new"
  338.     thread.  The values 20000,10 make a quick "clicking" like sound that
  339.     isn't *too* anoying.  I'm open to ideas on this one ... :)
  340.  
  341. o   Default tagline file is now MISC2.TAG in an attempt to minimize
  342.     anti-Windows discussions in OS/2 related conferences.  OS2.TAG is still
  343.     in the distribution zip, you'll just have to set it yourself, if you
  344.     want it.
  345.  
  346. o   Minor bug: List Selection processing would exit a list if HOME was
  347.     pressed on the "first" page of records.  Now, user stays in the
  348.     selection list and the cursor moves to the first entry.
  349.  
  350. o   When Sorting by Subject, the 'H' and the 'B' keys used the old way
  351.     (searching forwards/backwards by subject) aren't that useful.  I've
  352.     changed their behaviour slightly in this case.  The 'H' key will move
  353.     forward a message, and if the "thread" changes, will display the
  354.     Quick Thread Summary screen.  The 'B' key will move backwards one
  355.     message pull up the summary screen if you move into a "new" thread.
  356.     NOTE that the selecting a thread from the summary screen moves you to
  357.     the *first* record in the thread, even if the 'B' key was previously
  358.     used.  There currently is no way to jump to the last message in a
  359.     thread.  Is this capability desirable?
  360.  
  361. o   The default for the setting of ExtendedAttributes is now YES.  If you
  362.     do not use the E editor, some minor speed increases may be achieved
  363.     simply by setting this to NO.  Note that this is only an issue with
  364.     users creating their INI file for the first time (existing INI's are
  365.     not affected by this change).
  366.  
  367.  
  368. Didn't get to twits and canned searches yet - Sorry!  I think the threading
  369. stuff will satisfy more of you, anyway :)
  370.  
  371.  
  372. Changes included in v1.2x
  373. -------------------------
  374.  
  375. o   Thread sorting/grouping would sometimes misplace a message because the
  376.     last character was chopped.  I've modified thread matching to check
  377.     24 characters instead of 25.  I can't see where this could be a problem.
  378.  
  379. o   Disabled many keys (Q, I, Tab, Backspace) while searching all conferences.
  380.     These weren't functional under searching-all conditions, and caused
  381.     strange things to happen when invoked.
  382.  
  383. o   Pre-defined searches have been added.  I did this for myself, but I'm
  384.     sure many will see the benefit.  Basically, you can build your own
  385.     conferences by defining search criteria.  All messages found to match
  386.     will he included in the defined conference.  The "MakeConference"
  387.     parameter is added in the MR2.INI file, or can be added into the BBS
  388.     specific INI file.  See the included file "Search.Ini" for an example.
  389.     You can have criteria listed in the MR2.INI *and* the BBS ini, and
  390.     they will be combined correctly.
  391.  
  392.     The following set of lines:
  393.  
  394.         MakeConference = MR/2
  395.         String = MR/2
  396.  
  397.     will result in MR/2 searching (in the background, multithreaded) all
  398.     message for the string "MR/2" and creating a custom "MR/2" conference
  399.     that will appear in the Conferences w/Mail menu.  Once the defined
  400.     custom conferences have been built, and you return to select a
  401.     conference, these new conferences will be listed.
  402.  
  403.     The number of search result conferences is "unlimitted" - at least in
  404.     a practical sense.  Memory is the issue, and valid file names.  I use
  405.     prefixes of A00 thru A99, up to Z99.  That's 2600 possible conferences.
  406.     If someone needs more, please let me know :)
  407.  
  408.     A single pass is made through the message base - for each message, all
  409.     combinations of search criteria are evaluated and the message is
  410.     recorded in any/all of the conferences it's found to belong to.  MR/2
  411.     will "beep" (low sounding tone) when it's done searching.  I'll INI-ize
  412.     this sound later.
  413.  
  414.     As another example:
  415.  
  416.         MakeConference = DR DEBUG/C/C++ & OS/2
  417.         Conferences=93,99,111
  418.         String = OS/2
  419.  
  420.     defines a conference that will display with a rather verbose name,
  421.     and will contain all message from conferences 93, 99 and 111 in which
  422.     "OS/2" was found.  A conference number of "*", or a missing conference
  423.     line will cause ALL conferences to be searched.
  424.  
  425.     This feature is particularly handy for me.  I'm a diehard CTOS fan, and
  426.     I code a commercial bar coding software package.  If these topics ever
  427.     appear anywhere, I'd like to know.  Since they rarely appear, I
  428.     rarely bother to search for them.  With a pre-defined search, these
  429.     words are always checked for, and I'll never(*) miss an occurence due
  430.     to laziness.  I can simply add the lines:
  431.  
  432.         MakeConference = Miscellaneous
  433.         Conferences=*
  434.         String = Barcode\Bar Code\CTOS
  435.  
  436. o   Other INI parameters have been added to compliment the new
  437.     MakeConference option. The parameter "ShowEmpties" controls whether
  438.     empty custom conferences are to be displayed with message counts of
  439.     "(0)".  If NO is specified, empty conferences do not appear at all
  440.     in the conference list.  "DisplayStatus" will show the message
  441.     search/hit counter on the bottom of the screen if set to YES.
  442.     "SeparaterBar" will place a line between the normal and custom
  443.     conferences if set to YES.
  444.  
  445. o   Fixed a bug in the logic that used to split long messages.  I messed
  446.     this up when I put in word wrapping - it wouldn't really split messages,
  447.     it simply put all lines in the first message and created an empty
  448.     "cont'd" message.
  449.  
  450. o   In testing the message splitting, I discovered that replies over 32K
  451.     in size weren't even registering.  This equates roughly to 800 lines of
  452.     message text.  The reply builder now accomodates messages up to
  453.     64K in length.  This is roughly 1600 lines of text, or 15-16 messages
  454.     "cont'd" from the first.
  455.  
  456. o   AND still while testing the message splitting logic, I found an even
  457.     bigger problem with replies.  If the reply file ever reached a total
  458.     size greater than 32K, replies would be ignored.  This had to do with
  459.     using an integer to hold the file size, and having it overflow.  It now
  460.     uses a long value and will function correctly.  I'm suprised no one
  461.     caught this - or maybe they did and didn't report it.
  462.  
  463. o   Conferences for which MR/2 was left to build NDX files for could not
  464.     be searched due to a problem with the way the searching functions
  465.     used the internal NDX files.  This became apparent when I tried to
  466.     search through the new custom conferences.  This has all been corrected.
  467.  
  468. o   Removed the annoying beeps when selecting from a list and you hit the
  469.     uparrow or downarrow too many times.
  470.  
  471. o   Converted all thread code to use _beginthread/_endthread.  Previously,
  472.     I was using DosCreateThread and mixing in some C runtime library
  473.     calls.  While this seemed to work OK, I figured I'd play it safe and
  474.     convert, especially considering the strange trouble some folks are
  475.     having (although I'd like to blame the E editor :).
  476.  
  477. o   Modified tons of code to support 4 digit numbers for index file.  Most
  478.     BBS's carry under 1000 conferences, but some (Channel 1 in particular)
  479.     boast over 1000 and have NDX files like "1654.NDX".  All old code was
  480.     geared to fixed 3-digit numbers.
  481.  
  482.     A benefit (?) of this is that custom "made" conferences now are numbered
  483.     A0000-Z9999, which gives us more breathing room (as if 2600 custom
  484.     conferences weren't enough :)  Now you (theoretically) have up to 26000.
  485.  
  486.     EditHeader now functions just a little differently when specifying a
  487.     conference number.
  488.  
  489. o   On Custom-made conferences, by default the search string is found in
  490.     all conference messages and aligned as if a search was performed.  If
  491.     you wish to suppress this action, set the INI file parameter
  492.     "PositionOnMatchLine" to NO.
  493.  
  494. o   When "Replies exist, keep?" is denied, the .rep file is now actually
  495.     renamed to a .old file.  I've had happy fingers too often and lost
  496.     reply(s).  This is not optional and is automatic - I'll add an INI
  497.     parameter to control it later.
  498.  
  499. o   Split out all pre-1.0 data from this file into oldread.me.  I'll
  500.     reorganize the whole thing later - probably with version 2.0.
  501.  
  502. o   Mouse cursor would not hide properly when placed past line 25 (in
  503.     non-standard video modes).  Cursor would cause streaking and generally
  504.     misbehave.  This has been fixed.
  505.  
  506.  
  507. Changes included in v1.3
  508. ------------------------
  509.  
  510. o   Scroll bars are now integrated into DLSelect (the selection list
  511.     routines).  You can use the mouse to scroll through lists.  I've also
  512.     made clicking on the divider line directly above the first entry to mean
  513.     "page up".  Clicking on the bottom line of any selection list box
  514.     means "page down".
  515.  
  516.     The scrolling routines need some work - mostly cosmetic.  One annoying
  517.     problem is the lack of a mouse repeat when holding the LMB down.  I'm
  518.     not sure why I don't get this - I'll have to fiddle with ZTC's low
  519.     level event handling functions again :(.  (In other words, holding the
  520.     mouse down on the up or down arrows only registers once per click -
  521.     if you hold it for half and hour but only "click" once, the display
  522.     moves only one line.)
  523.  
  524. o   I've used ZTC's event "timer" to get a mouse repeat.  Works pretty well.
  525.     Now to test it against time :)
  526.  
  527. o   Selection lists now allow for "jumping" to a letter prefix.  For example,
  528.     while viewing the Master Conference list, pressing "O" will jump to
  529.     the NEXT conference that starts with an "O".  Immediately pressing "S"
  530.     will jump to the next conference that starts with "OS".  Pressing
  531.     any non-printable key (e.g., up arrow) will reset the prefix string to
  532.     nothing.  Prefix search starts at the current cursor position and works
  533.     forward only.
  534.  
  535. o   The thread sort, which I thought to be "static", turned out to be pretty
  536.     votatile.  This was pretty obvious, I just didn't connect with what was
  537.     happenning.  I've fixed it so that identical subjects are sub-sorted by
  538.     message number.  This ought to keep everything in "order" within each
  539.     thread.
  540.  
  541. o   Line wrapping for replies has been fixed to "trim" leading spaces from
  542.     next line.  Previously, if a line wrapped so as to end with more than
  543.     one space before the next line's word, these extra spaces would be
  544.     left in front of the line.  This has been corrected.
  545.  
  546. o   Clock: And another ZTC bug wiped out.  Zortech's strftime function
  547.     messed up the %I parameter for hours in 01->12 format.  The display
  548.     would progress from 11:59 to 01:00 at midnight.  Wrong!  I've
  549.     corrected this and all clock displays seem to now work correctly.
  550.  
  551. o   If using PCBoard style taglines, I now use three dashes instead of
  552.     underlines for the tearline.  If Fido mode, underlines are used.
  553.     We'll see if this makes everybody happy.
  554.  
  555. o   I've included two icons with the distribution zip: mr2.ico and
  556.     email.ico.  MR2.ico is a Nick Knight original and I'm not very proud
  557.     of it :(.  Maybe I'll play with it some more and purty it up.  EMAIL
  558.     is a modified ICON I scarfed and looks IMO nicer.  Maybe I'll add
  559.     some more possibilities ...
  560.  
  561. o   If all replies from an "existing" reply file were killed the
  562.     original reply file was not deleted.  MR/2 counted zero replies, so
  563.     it figured there was nothing to do, and any old file remained
  564.     untouched.  Now, I rename the old .rep file to a .old file.
  565.  
  566. o   The 'V' key, while viewing a message, has always been there to change
  567.     video modes while reading any message.  I never documented this because
  568.     of various bugs.  Well, someone discovered it and reported the bugs,
  569.     which I now believe to be fixed.  'V' will now toggle through the
  570.     video modes (number of lines) while viewing any message.
  571.  
  572. o   To remain fairly keystroke compatible w/SLMR, I've made Ctrl-PgUp and
  573.     Ctrl-PgDn translate to Tab and Backspace, respectively.  This is during
  574.     message reading only; these keys perform next-thread, previous thread
  575.     functions.
  576.  
  577. o   Fixed a bug with the resetting of the original video mode upon exit.
  578.     Also, added the ability to specify ANY video line mode in the INI file.
  579.     This line count gets added to the video toggle round robin loop.
  580.     If you specify a video mode of 52, MR/2 loads this way (no error
  581.     checking is done - you'll stay in 25 line mode if 52 is invalid).
  582.     If you keep pressing ALT-V on packet select, you'll cycle through 25,
  583.     then 28, through 60 line mode.  After 60 line mode, you'll toggle back
  584.     to 52, then 25 again.  Get it?
  585.  
  586. o   Also, I "fixed" it so that if no VideoMode is specified in the INI file,
  587.     MR/2 defaults to whatever the current Video Mode is.
  588.  
  589. o   Default Word Wrap column for replies is now 80 (was 78).  I'm testing
  590.     this to see if quote-wrapping problems diminish while message-wrapping
  591.     problems remain in check.  If you specify a value in your INI file,
  592.     this change is irrelevant.
  593.  
  594. o   OldRead.Me (pre-1.0 history log) has been renamed to mr2.hst.  I'll
  595.     shuffle off older entries from read.me into this file as they become
  596.     kinda old.
  597.  
  598. o   Fixed some bugs with the "To" field getting confused when EditReply
  599.     Header was set only to AFTER.
  600.  
  601. o   Reformatted the Quick Thread Summary screen so that all subjects line
  602.     up, even if the read/message counst go to 2 digits.  This was also
  603.     necessary so that typing letter keys properly jump to the correct
  604.     spot.
  605.  
  606. o   3 New INI parameters.  BeepOnPersonals defaults to Yes and controls the
  607.     beep that is made when personal messages are displayed.  GoToLastRead
  608.     defaults to No.  If set to Yes, the "do you wish to return to your last
  609.     reading position" is suppressed and MR/2 just goes there automatically.
  610.     BackupOldReps defaults to true and controls the renaming of .rep files
  611.     to .old files instead of deleting them.
  612.  
  613. o   Another new parameter, by request.  You may optionally specify an
  614.     alternate editor command for use when creating NEW messages.  The
  615.     INI token NewMessageEditor may be set just as the Editor parameter is,
  616.     and this command will be used whenever writing a new message.  This
  617.     allows for differing startup macros.  The "new" editor is used for
  618.     ALL non-reply editing (including MR2.INI, News, Files, Bulletins,
  619.     Save files, etc).  If a "new message" editor is not specified, the
  620.     default Editor command is used for everything.
  621.  
  622. o   Modified the message formatter to tack on [M][][] to the end of the
  623.     "===" divider bar.  These are new mouse click areas.  The arrows cause
  624.     scrolling down and up.  Clicking on the M invokes the new "mouse menu".
  625.  
  626.     NOTE:  I was also going to assign the mouse menu to the middle mouse
  627.     button, if available, however, my middle mouse button doesn't seem to
  628.     function even after tweaking the MouSetEventMask parameters. Hmmm...
  629.  
  630. o   The new mouse menu can be displayed and used for keystroke simulation
  631.     while viewing a message.  Click in the new [M] box, and the mouse
  632.     menu is displayed offering 16 options.  Click on any of these options
  633.     to invoke that function or use the right mouse button to cancel.
  634.  
  635.     The older mouse hot areas are still functional.  For instance,
  636.     clicking on the message SUBJECT area simulates pressing "H" and
  637.     clicking on the CONF: area simulates an I.
  638.  
  639. o   I've also implemented double-clicking on selection lists.  This is
  640.     currently a must-do; the old method of single clicking simply
  641.     highlights the entry.  You must double click to select it.  I may let
  642.     you pick which method to use (single or double-clicking) via INI param.
  643.  
  644. o   If a packet is already open and you answer NO to the "use this one"
  645.     prompt, MR/2 now deletes MESSAGES.DAT.  Previously, the work directory
  646.     files remained undeleted until a packet was selected.  This caused
  647.     the "use this one" prompt to come up after any other function.  For
  648.     instance, each time the video mode was toggled, you'd have to answer
  649.     this prompt again.  Not any more!
  650.  
  651. o   I've changed the status line on the bottom of the packet select menu
  652.     and added a "mouse menu" on the right hand side.  Single click on a
  653.     packet name and then click on "[D]" to delete this packet.
  654.  
  655. o   If you used "X" to fast-exit MR/2 and a BBS "local" INI file was in
  656.     use, I still reloaded MR2.INI.  This step is now skipped resulting
  657.     in slightly faster exit speeds.
  658.  
  659. o   New INI parameters:  MouseMode=Single sets the mouse "click" mode to
  660.     Single or Double.  The NEW default is double clicking.  For those of
  661.     you who liked it the old way, set the mode to SINGLE.
  662.  
  663.     Also, MouseClickSpeed can be set to the maximum number of milliseconds
  664.     allowable between mouse clicks to still be considered a double-click.
  665.     The default is still being figured out - it'll be somewhere between
  666.     40 and 500.   OK, it's 500 :)
  667.  
  668.     AND ... MouseScrollSpeed sets the delay for scrolling when you park the
  669.     mouse with the left button down on a scrollbar arrow.  The default is
  670.     set to 1.  If this is too fast for you, change it to a higher value.
  671.  
  672. o   Made the same "out of bounds clicks are just ignored" change to the
  673.     menu routines.  Clicking out-of-bounds on the main menu canceled still.
  674.  
  675. o   Had to fix a timer to simulate mouse clicks for scrolling the message
  676.     viewer when parked on the mouse scroll arrows.
  677.  
  678. o   I've added a new canned-search parameter, "CHECK".  This enables you to
  679.     check for text in any combination of From, To, Subject and Message.
  680.     Message may be further sub-divided into Body and Origin.  I consider
  681.     the "origin" section to be anything after and including the first
  682.     "tear" line.  For Example:
  683.  
  684.     MakeConference = MR/2 - Tagline
  685.     Check = Origin
  686.     String = MR/2
  687.  
  688.     will check only the message section, and only below the first "---" or
  689.     "___" found in the message.  Further:
  690.     
  691.     MakeConference = MR/2 - No Taglines
  692.     Check = Subject,Body
  693.     String = MR/2
  694.  
  695.     will check message up to the first tearline, and will also check subject.
  696.     No sense in this case checking From and To, although I could have added
  697.     this.  You can find all message from Jim Gilliland this way and build
  698.     a conference of them.
  699.  
  700.     NOTE:  The message viewer will align the display on the first hit
  701.     in the message.  It will NOT ignore the body if the search was defined
  702.     as ORIGIN only.
  703.  
  704.     Leaving the CHECK string out will result in ALL areas being checked.
  705.  
  706.     This code was partially implemented before, I just had to add the INI
  707.     parameters and the origin splitting.
  708.  
  709.     This will be the base code for my twit filters - a little tweaking
  710.     and you'll be able to twit any message combination for which you can
  711.     build a custom conference.
  712.  
  713. o   Optimized the message section searching a little.  It *was*
  714.     converting the message to upper case for each search criteria
  715.     record, even though the first check had already converted it.  Now
  716.     it only converts the message on the first check, and only if the
  717.     message body is to be checked.
  718.  
  719. o   You can now forward the message you are reading to another user
  720.     and/or conference.  Simply press "W" (SLMR-compatible key) and the
  721.     Message Header Edit screen will appear.  Fill out the To field and
  722.     change anything else as needed.  Accepting this form will create
  723.     a forwarded copy of this message in the reply conference.
  724.  
  725.     NOTE:  MR/2's tagline does not appear in these messages UNLESS you
  726.     modify it later.  Making revisions toa forwarded message will cause
  727.     MR/2 to place/replace its tagline on the message.
  728.  
  729. o   When modifying a reply, MR/2 now extracts and reuses the original
  730.     tagline.  Previously, a new tagline would be automatically picked to
  731.     replace the original.
  732.  
  733. o   Modified the packet open logic to use an insert sort when creating the
  734.     list of Master Conferences.  Sorting after-the-fact was very slow.
  735.     PC-Ohio packets (w/600 conferences) load much faster now.
  736.  
  737. o   I tried setting the background conference builder to IDLE priority and
  738.     it would not work properly with PMInfo loaded.  Changed it back to
  739.     regular priority with a -30 delta.
  740.  
  741. o   I've implemented some basic "ANSI animation" code in the message viewer.
  742.     Press "A" while viewing any message with ANSI escape sequences and
  743.     see if it works.  Scrolling of the screen is hokey - I'll work on it
  744.     some more.  Some screens look OK, though :)
  745.  
  746. o   Ooops - big bug.  If Control.Dat was > 32k MR/2 would fail to read the
  747.     master conference list, and no mail could be read.  This limit is
  748.     now 64k, and I can easily just remove any limit with the next release.
  749.     The sample packet I was presented with had 2500 conferences available
  750.     and Control.dat was around 40K.
  751.  
  752. o   A "Working" message now displays while a packet is being opened by MR/2.
  753.     There was a substantial pause on packets with 600 conferences, and a
  754.     couple of seconds pause on the 2500 conference packet above.  It appears
  755.     that there's trouble (as all is quiet), and then the main menu pops up!
  756.  
  757. o   Trimmed the end of replies a little.  It was possible to get an extra
  758.     blank block (128 spaces) at the end of the message.
  759.  
  760.  
  761. Changes included in v1.31
  762. -------------------------
  763.  
  764. o   Modified the packet select clock display to show centered on the screen.
  765.     It was centered for short month names, but September (it *is* the longest
  766.     name) made it look lopsided.
  767.  
  768. o   ANSI animation is much improved ... I've still got some work to do.
  769.     Some of these ANSI messages are incredible!  Toggle MR/2 into 34 line
  770.     or greater mode to read stubborn messages.
  771.  
  772. o   OK, I've enabled "ANSI detect" for News, Bulletins and New Files.
  773.     Actually, if I would have enabled it, this would have worked well in
  774.     version 1.3.  Unfortunately, I only tested it with message reading, and
  775.     it didn't make any sense for these - if a message had ANSI codes, it
  776.     was a good bet it wanted full control of the screen, which I didn't
  777.     want to give unless requested by the user (the "A" key).  Now I find,
  778.     after sampling several BBS's (Wildcat's were suggested, then I find that
  779.     PCBoards with Graphics menus enabled sends ANSI codes also :), that
  780.     the non-message ANSI stuff tends to be much more behaved.  Anyway, test
  781.     it out, let me know of any problems.
  782.  
  783. o   For ANSI animations, had to enable the "blinking" attribute.  I then
  784.     set it back off for regular operations.
  785.  
  786.  
  787. Changes included in v1.32
  788. -------------------------
  789.  
  790. o   Blinking attribute still didn't work in the message/file viewer.  News
  791.     files with blinking text showed reverse video in some starnge color.
  792.  
  793. o   Custom conference search was still started on message entry w/o any
  794.     existing packets (ALT-E from the packet select screen).  There are
  795.     no message to search in this mode, but the thread was started and the
  796.     beep would occur almost instantly.  This has been fixed.
  797.  
  798. o   Modified the "ShowEmpties" default flag from YES to NO.  Set it to
  799.     YES in your INI file if you want empty custom conferences to show.
  800.  
  801. o   KeepMessageMarks would sometimes get corrupted and set to NO.  This
  802.     was caused by an error in the INI.CPP code that "dropped" into the
  803.     "K" parameter processing after doing the "H" processing (missing
  804.     break statement).  For some reason, the corruption was more sensitive
  805.     to opening a packet using WPS "associations" that direct MR/2 selection.
  806.  
  807. o   But then, there was still a problem with using WPS associations to
  808.     open a packet.  Problem also occured whenever simply passing a file
  809.     name on the command line.  MR/2 tried to save Bookmark EA's, but used
  810.     an invalid file name.  This is now working correctly.
  811.  
  812. o   Added NEWMR2.ICO to the distribution zip.  This is an MR/2 icon
  813.     submitted by Dennis Powell.  He claims it's better looking than mine,
  814.     and I guess I'll have to agree :).
  815.  
  816. o   The ANSI file viewers would clear the screen to the user-defined message
  817.     color before showing the file/screen.  This resulted in the "wrong"
  818.     background color.  I now clear the screen to black before showing text
  819.     using ANSI escape sequences.
  820.  
  821. o   Also, MR/2 left all ANSI display routines with the default screen colors
  822.     set to whatever the ANSI display last set.  I now set normal white on
  823.     black upon exiting these functions.
  824.  
  825. o   I made some changes to try to speed up the scrolling of selection lists.
  826.     The mods where to the video display routines, but seemed to do nothing.
  827.     I don't really see any slowness, unless I stand on the downarrow key.
  828.     These may be more a case of slow keyboard repeat.  I'll see if I can
  829.     modify this somehow.
  830.  
  831. o   When you change the FROM user when editing the reply header, the new
  832.     "from" name is remembered and becomes the default for as long as that
  833.     packet is open.  Once the packet is closed, the user name defaults
  834.     back to the one found in the control.dat file of each QWK file.
  835.  
  836. o   I removed survey.txt from the distribution zip.  I think I know what
  837.     the majority of folks want, and the zip file needs to be pruned a little.
  838.     Also removed Misc1.Tag, leaving Misc2.Tag and OS2.Tag.  These may get
  839.     trimmed or disappear altogether at some time ...
  840.  
  841. o   Also removed MR2.DOC from Welcome.qwk, the default, "I'm lost" new-user
  842.     packet.  I've replaced it with a small note about seeing mr2.doc as
  843.     a separate file.  This file was actually packed twice, now only once.
  844.  
  845. That's it for now ... I'll work on adding some actual enhancements as soon
  846. as I get MR/PM out and somewhat stable ... that'll probably take a week,
  847. or two, or three.  Look for MRPM_095.*
  848.  
  849.  
  850. Changes included in v1.33
  851. -------------------------
  852.  
  853. o   Forwarding messages had a problem with taglines.  The forwarded preface
  854.     was placed in the edit-header tagline field and could get corrupted.
  855.     Forwarded messages get no tagline; this field now displays blank and
  856.     any entry here is ignored.
  857.  
  858. o   On some messages, lines would be highlighted as quotes that were
  859.     obviously not.  This was from ghost characters from previous lines and
  860.     has been fixed.
  861.  
  862. o   Fixed a problem with the MR2.ID recognition routine.  Basically, if
  863.     any of my checksums calculated to a CR or a EOF (0x1A), the file would
  864.     not be recognized as valid.  This has been fixed.
  865.  
  866. o   If a zero length reply file was for some reason saved, then reedited,
  867.     MR/2 would throw a second tagline on the file.  Fixed.  I wonder if I
  868.     can reasonably detect the cases where the reply has been saved w/o
  869.     any user-added modifications and warn??
  870.  
  871. o   In the INI file, MouseMode now supports the keyword "Off" in addition
  872.     to SingleClick and DoubleClick.  All "Off" does is tells MR/2 to hide
  873.     the mouse cursor (the mouse is still active, just hidden).  ... by
  874.     registered user request.
  875.  
  876. o   New INI parameter SuppressVersionInTagline defaults to NO.  If
  877.     you're a registered user, you may set this to YES and the version
  878.     number(s) will be suppressed when MR/2 generates a tagline.  This
  879.     allows more room for your tagline message, particularly when used in
  880.     conjunction with "SerialInTag" set to NO.
  881.  
  882.  
  883. Changes included in v1.34
  884. -------------------------
  885.  
  886. o   The custom conference search "check" keyword ORIGIN has been modified
  887.     to recognize a lines starting as " * " as the "origin".  Also sees the
  888.     line as the start of the origin area if the "*" is instead an "X" or a
  889.     ASCII block char (0xFE).
  890.  
  891. o   The 1.33 tagline modifications to suppress the VERSION string worked OK,
  892.     but the new code messed up the non-suppressed version string for
  893.     registered users.  This has been fixed.
  894.  
  895. o   Added PMColors to the INI file processor.  This adds nothing to MR/2
  896.     classic - this is for the PM version :(.
  897.  
  898. o   Removed the file Read.Me from the Welcome.Qwk default packet.  This
  899.     was just a duplication of the file read.me that's distributed
  900.     separately.  Duplicating the file just made distribution zip's larger
  901.     and made extra work for me when packing up new versions.  Now, all
  902.     that's in the .qwk packet is instructions to read the read.me file.
  903.  
  904.  
  905. Changes included in v1.35
  906. -------------------------
  907.  
  908. o   Another control.dat problem was found pertaining to a specific BBS
  909.     (or BBS software/mail door?).  A registered user sent me a packet where
  910.     control.dat had the user name padded to about 40 characters max.  This
  911.     overwrote some internal variables (specifically, the BBSID) and the
  912.     system tried to create replies in a file named "       .msg".  This
  913.     is not legal and MR/2 would puke.  Since this has now caused trouble
  914.     twice, I've rewritten the routine to handle virtually any length of
  915.     user name.
  916.  
  917.  
  918. Changes included in v1.36
  919. -------------------------
  920.  
  921. o   Beeping on personal messages did not always work.  The comparing of
  922.     names was case sensitive, and worked only if the message name and the
  923.     user name in control.dat matched EXACTLY.  This has been corrected.
  924.  
  925. o    Modified the tagline "random" seeding in an attempt to make things more
  926.     "random".  Someone reported that the same taglines were coming up even
  927.     when set to RANDOM.  I could not recreate this, but an examination of my
  928.     code revealed that there were only 60 possible seeding combinations.
  929.     (I used time(NULL)%60).  I've changed this to offer a broader range of
  930.     starting seeds.
  931.  
  932. o   Tagline style now defaults to PC-Board.  This is 3 dashed as a tearline
  933.     and hi-end ASCII block characters as MR/2's signiture delimiters.  I
  934.     also added the keyword "TagStyle" to MR2INI.ORG.  It's been there for
  935.     a while, but I missed it when documenting and setting up this starter
  936.     INI file.
  937.  
  938. o   Fixed a thread-name formatting problem in the quick thread summary
  939.     logic (originally fixed in MR/2 PM).  The very last thread name would
  940.     sometimes be blank or some initial characters missing due to a previous
  941.     "RE:" being detected.  This has been fixed.
  942.  
  943. o   Modified the conference "sort" (when Alpha-sorted master conference
  944.     names are requested <the default>).  Previously, conference names
  945.     where inserted into the final linked list used by the QWK class in
  946.     insertion-sorted order.  In other words, I'd plow through the linked
  947.     list and find the right spot for a conference name and plop it
  948.     there. This was extremely slow for large lists.  Now, names are
  949.     recorded (sorted) in a BTREE structure, then transfered into
  950.     linked-list format. The increase in speed (using PC-Ohio's 1000+ and
  951.     Channel 1's 2200+ conference lists as tests) is dramatic.  I'm
  952.     happy, I hope you are too.
  953.  
  954.  
  955. Changes included in v1.37
  956. -------------------------
  957.  
  958. o   The selection box logic had some problems when working in modes
  959.     with a large number of display lines (e.g., 60 line mode).  Pressing
  960.     enter on the 32nd listed entry or beyond was treated by MR/2 as being
  961.     a letter-character command and the "ENTER" would be ignored.  This has
  962.     been fixed.
  963.  
  964. o   Added a new member of zEq, the event class.   The event function
  965.     rehidemouse() can be used after a video mode change.  If the mouse
  966.     flag says it should be hidden, MouRemovePtr() is called with the
  967.     current screen size.  If the mouse flag says the mouse is *not*
  968.     hidden, nothing is done.
  969.  
  970. o   The changing of video modes (number of display lines) caused the mouse
  971.     cursor to sometimes become visible when it shouldn't.  This has been
  972.     corrected.  Also, if MouseMode was set to OFF and you replied to any
  973.     message, the mouse would appear upon return from the editor (the mouse
  974.     flag was reset to "show" upon return).  This has been fixed.
  975.  
  976. o   In an early and primitive attempt to support long file names, I've
  977.     switched to the linker distributed with the MS v1.2 toolkit.  It seems
  978.     blink (Zortech's linker) doesn't like the LONGNAMES keyword in the
  979.     .def file.  Hopefully, nothing strange will happen :)
  980.  
  981.  
  982. Changes included in v1.38
  983. -------------------------
  984.  
  985. o   If EditHeader was set to AFTER only and an existing reply was modified,
  986.     "your" name would appear in the TO field as well as the FROM field.
  987.     This was the result of a 9/2/92 patch for AFTER mode, but the patch
  988.     should not effect editing of replies.  Fixed.
  989.  
  990. o   While working in Header Editing "AFTER" mode I also discovered that
  991.     the subject of a "Write new" message was often filled in with the
  992.     last read  message's subject.  Subjects are now blanked out when
  993.     writing a "new"  message.
  994.  
  995. o   Write new: conference numbers > 1000 would only show last 3 digits.
  996.     Display now is widened by one and 4 digit conference numbers displayed.
  997.  
  998. o   Conference select when editing the message header has been expanded
  999.     in width by one character to match Write new conference select.
  1000.  
  1001. o   My testing of BBS's with 4 digit conference support failed to find one
  1002.     possibility.  It was reported that, at least once, some QWK door produced
  1003.     4-digit index files for conference numbers < 1000.  For instance,
  1004.     conference 1 would be indexed by 0001.ndx.  "Normal" doors seem to use
  1005.     3 digits *until* the conference number grows to 1000 or more.  MR/2 now
  1006.     supports and auto-detects both types.
  1007.  
  1008. o   Enhanced the tagline stealer to recognize taglines made by the BlueWave
  1009.     mail reader.  Added recognition for Speed Reader's method, also.
  1010.  
  1011. o   A packet was provided to me that had strange, extremelly long conference
  1012.     names; actually conference names followed by comment-like descriptions.
  1013.     These long names were causing strange screen-wrapping problems.  I've
  1014.     now got a 60-char maximum box width set for conference names.  Names
  1015.     longer that this will be truncated ... they won't look pretty, but they'll
  1016.     look better than what I just saw :)
  1017.  
  1018. o   My new/faster btree sorting method would toss out duplicate
  1019.     conference names.  This wouldn't normally be a problem, but OS/2
  1020.     Shareware's QWK door truncates all Usenet news feed names to
  1021.     "Comp.Os.Os2.". Versions using the old sort method (or new ones with
  1022.     Alpha sorting OFF) would show multiple conferences all with the same
  1023.     name.  New version show the conference only once, if at all.
  1024.     Collisions (duplicate names) are now handles as unique records and
  1025.     added - so all conferences show up. They're still named the same.
  1026.     I've netmailed OS/2 Shareware with a description of the problem.
  1027.  
  1028. o   Conference name boxes on "Write new" and header-editing selection now
  1029.     adjust their width to accomodate long conference names.  (Kind of a
  1030.     continuation of the fix above).
  1031.  
  1032. o   I've been making alot of minor changes and improvements and haven't
  1033.     been too careful about remembering them.  Let's see, I found a minor
  1034.     bug with adding replies.  Every time you replied, a 30 byte chunk of
  1035.     memory was allocated for the conference listing, and any older conference
  1036.     record was never freed.  You'd have to make quite a few replies before
  1037.     this would create a problem - but it's fixed anyway.  The "Read" indicator
  1038.     on the message index and quick thread summary has been changed from
  1039.     "*" to "√".  I think it looks nicer.
  1040.  
  1041. o   Tagline stealer can now steal wider taglines - 76 chars in length max.
  1042.  
  1043. o   Added some code to detect "&" symbol in BBS name.  This was causing
  1044.     the OS/2 CMD.EXE to do strange things when passed to PKZip and PKUnzip.
  1045.     MR/2 now wraps all BBSID-based names that contain a "&" in quotes.
  1046.  
  1047.  
  1048. Changes included in v1.39x - BETA
  1049. ---------------------------------
  1050.  
  1051. Folks:  I'm calling the next few versions "beta-level" releases.  Most of
  1052. my releases are anyway <g>, but the next couple of cuts are going to have
  1053. many new functions and lots of rewritten sections.  Most of these are
  1054. scheduled for version 2.0, but I'm thinking that I'll release them in
  1055. steps instead of holding back (i.e., 1.4, 1.5 ... 2.0).  Stick with v1.38
  1056. if your craving for adventure is low :)
  1057.  
  1058. o   INTERNAL: Renamed RemoveKilledReplies() to RemoveKilledMessages().  This
  1059.     function will be used to later pack message "folders" and the new name
  1060.     better reflects its more generic purpose.
  1061.  
  1062. o   INTERNAL: Added folderfh to QWK class and modified all message access
  1063.     routines to check the freadingfolder flag.
  1064.  
  1065. o   INTERNAL: new routine fix_path() in INI.cpp.  ReplyPath and PacketPath
  1066.     now pass through this call, as well as FolderPath.
  1067.  
  1068. o   INTERNAL: Massively modified Inbasket/Folder logic - I didn't like
  1069.     the way it was working.
  1070.  
  1071. o   Packing of replies has been reworked.  Previously, all replies were
  1072.     copied to a temporary file, with killed replies being filtered out.
  1073.     Then, the reply file was deleted and the temporary file renamed to
  1074.     the reply file name.  Now the reply file is packed "in place".  This
  1075.     is faster, does not require a temporary file AND has been made generic
  1076.     to allow for future use with folders.
  1077.  
  1078. o   Mouse is now semi-function on "form" type entry screens.  Functional
  1079.     as far as clicking on any informational "keystroke" bar will simulate
  1080.     that keypress.  For example, when saving a message, clicking on "pick
  1081.     from list" will simulate an F2 keypress.  This was probably more coding
  1082.     than it was worth, but it works :)  Tagline stealing, save file select
  1083.     and reply header editing were effected.
  1084.  
  1085. o   Added an " ENTER = ESCAPE " key bar to save file name entry to aid in
  1086.     mouse use.
  1087.  
  1088. o   New TagStyle value has been added.  If the INI file contains the line
  1089.     "TagStyle=TwoLine", then a tagline in the form of:
  1090.  
  1091.     .. your funny tagline here
  1092.     -- MR/2 v1.38 NR
  1093.  
  1094.     will be produced.  Originally, I called this the "BlueWave" style, but
  1095.     something didn't sit well with me, so I changed it to "TwoLine" :).
  1096.  
  1097. o   You can now "Defer" any message to a QWK save area independant of the
  1098.     current packet for later processing.  This will create an "InBasket"
  1099.     conference which will contain all messages for the current BBS that
  1100.     have been deferred and never manually deleted.  This allows for you
  1101.     to reply to the message later, when time permits, without having to
  1102.     keep the entire packet around, trying to remember why, and which
  1103.     message it was.   Press "D" or "/" while viewing the message you
  1104.     want to defer.
  1105.  
  1106.       *** THIS IS BETA-LEVEL CODE - USE WITH CARE  ***
  1107.  
  1108.     ALSO: Inbasket code is subject to change ... read the next version's
  1109.     read.me file to make sure inbasket messages saved with this version
  1110.     will work with the new.  You may have to "clean up" old inbasket
  1111.     message with the old (this) version MR/2.
  1112.  
  1113. o   Added FolderPath as an INI param.  This is where folder directories
  1114.     will be created.  The default is "..\", so that subdirectories off of
  1115.     the MR/2 "home" directory will be created.
  1116.  
  1117. o   ALT-E can now be used to enter NEW messages for any known BBS even
  1118.     when the "no packets found" dialog box is displayed.  I thought I'd
  1119.     done this before, but it wasn't working.  Now it does :)
  1120.  
  1121. o   Forced REPLYLOG variable to NO - this wasn't finished and I'd
  1122.     inadvertently documented it in the default INI file.  It did very
  1123.     strange things.  I'll try to finish this off soon so it works the
  1124.     way it's supposed to.  Sorry?
  1125.  
  1126. o   The internal editor is now functional.  Simply set the Editor
  1127.     specification in your INI file to "INTERNAL".  The editor is fairly
  1128.     simple; press HELP (F1) for a summary of available keys.
  1129.  
  1130.     NOTE:  This is also beta-level code.  Expect bugs, but the basic
  1131.     editor works OK.  Single window, no import/export text functions, yet.
  1132.     ALSO!!! Set your word-wrap margins in MR2.INI to *76 or greater* for
  1133.     the best results.  Smaller numbers work fine, except previous "quoted"
  1134.     sections get mangled (at least you can now see this *while editing*
  1135.     the message, though :).
  1136.  
  1137.     The editor is wide open for ideas.  I *still* don't want to spend alot
  1138.     of time writing editor code, but if an idea makes sense, I'll think
  1139.     about it.  TELL ME ABOUT YOUR PROBLEMS AND OFFER SUGGESTIONS, PLEASE.
  1140.  
  1141.  
  1142. Changes included in v1.40x
  1143. --------------------------
  1144.  
  1145. Not much feedback on the internal editor yet.  I used it for a while but
  1146. switched back to QEdit.  I need file import/export capabilities myself; I'll
  1147. be adding that to the internal editor soon.
  1148.  
  1149. o   Save file wildcarding logic fix.  First, if you entered a spec like
  1150.     "c:\tmp\*" and pressed ENTER, MR/2 would save the message to that file
  1151.     name, which is illegal.  No error would be reported.  Now, when ENTER
  1152.     is pressed and a wildcard is in the file name specified, MR/2 converts
  1153.     the ENTER into an F2 keypress and shows a file pick list.
  1154.  
  1155. o   If "C:\tmp\*" was provided as the save file pick list, and a file was
  1156.     selected from the list, the file name returned would be grunged.  The
  1157.     file name field would be filled with some mutation of the subject line
  1158.     from the message display.  This was due to the missing ".", which I
  1159.     assumed would always be there.  This has been corrected.
  1160.  
  1161. o   New INI parameter:  "TemplateFile".  This is another one of those
  1162.     features that is merely a starting place and has lots of future
  1163.     expansion possibilities.  Place a file name here that defines a
  1164.     template for all message replies.  The reply will created using this
  1165.     file as a guide BEFORE you edit it.  This allows for any necessary
  1166.     cleanup.  The "template" file I used for testing looked like this
  1167.     (note that the variables used will be documented below):
  1168.  
  1169.     -------------------------------------------------------------------
  1170.     Subject: @Subject@
  1171.     In a message dated @DATE@, @FROM@ said to @TO@:
  1172.  
  1173.  
  1174.     $BODY
  1175.  
  1176.  
  1177.     Nick Knight
  1178.  
  1179.     From @from@ reading @CONFNAME@ (@CONFNUM@) on @BBSID@, to @TO@
  1180.     Subject: @Subject@
  1181.  
  1182.     FidoNet:    1:157/2
  1183.     Internet:   nick.knight@pcohio.com
  1184.     Compuserve: 76066,1240
  1185.  
  1186.     To First:   @tofirst@
  1187.     To Last:    @tolast@
  1188.     YYMMDD:     @yymmdd@
  1189.     Date:       @date@
  1190.     From First: @fromfirst@
  1191.     From Last:  @FromLast@
  1192.     Msg Date:   @msgdate@
  1193.     Msg Time:   @msgtime@
  1194.     Day:        @Day@
  1195.     Julian:     @Julian@
  1196.     Time:       @Time@
  1197.     Time 24:    @Time24@
  1198.     AM/PM:      @AmPm@
  1199.  
  1200.     Upper:      @Upper@@Subject@ @upper@@day@
  1201.     Lower:      @lOWER@@Subject@ @lower@@day@
  1202.     Mixed:      @mix@@From@ -> @mix@@to@
  1203.     -------------------------------------------------------------------
  1204.  
  1205.     The quoted version of the original message is inserted at the $BODY
  1206.     marker, which is required.  NOTE that this is not an appropriate
  1207.     template file for use within internationally echoed conferences.
  1208.     It's offered here merely as an example.
  1209.  
  1210.     The section before the $BODY line allows for an "attribution"
  1211.     line or section.  The area below the $BODY marker works as a
  1212.     signoff or signature section.
  1213.  
  1214.     AGAIN, this feature is under development and may be changed in the
  1215.     next couple of versions.  My idea is to add more blocks to this file.
  1216.     For example, a definition for saved message headers, forwarded
  1217.     header definition, etc.,.  I've got plenty of ideas.
  1218.  
  1219.     The reply file generated by my test template file looked like:
  1220.     -----------------------------------------------------------------
  1221.  
  1222.     Subject: NEW ZOO
  1223.     In a message dated 03/06/93, DAN HANSON said to ALL:
  1224.  
  1225.     DH>I saw this in Time Magazine.  The New York Bronx Zoo has been
  1226.     DH>renamed to the International Wildlife Conservation Park.  In
  1227.  
  1228.     <My reply would be inserted here.>
  1229.  
  1230.     Nick Knight
  1231.  
  1232.     From DAN HANSON reading Main Board (0) on PC-OHIO, to ALL
  1233.     Subject: NEW ZOO
  1234.  
  1235.     FidoNet:    1:157/2
  1236.     Internet:   nick.knight@pcohio.com
  1237.     Compuserve: 76066,1240
  1238.  
  1239.     To First:   ALL
  1240.     To Last:    ALL
  1241.     YYMMDD:     930306
  1242.     Date:       03/06/93
  1243.     From First: DAN
  1244.     From Last:  HANSON
  1245.     Msg Date:   03-06-93
  1246.     Msg Time:   14:21
  1247.     Day:        Saturday
  1248.     Julian:     065
  1249.     Time:       03:08
  1250.     Time 24:    15:08
  1251.     AM/PM:      PM
  1252.  
  1253.     Upper:      NEW ZOO SATURDAY
  1254.     Lower:      new zoo saturday
  1255.     Mixed:      Dan Hanson -> All
  1256.     -----------------------------------------------------------------
  1257.  
  1258. o   Variables are available for use in the template file.  They are
  1259.     currently only used by the reply file generator.  I'll add the
  1260.     capability to other areas as I think of them.
  1261.  
  1262.     The following variables have been provided:
  1263.  
  1264.         BBSID                           TIME
  1265.         CONFNAME                        TIME24
  1266.         CONFNUM                         TO
  1267.         DATE                            TOFIRST
  1268.         DAY                             TOLAST
  1269.         FROM                            YYMMDD
  1270.         FROMFIRST                       UPPER
  1271.         FROMLAST                        LOWER
  1272.         MSGDATE                         MIX
  1273.         MSGTIME                         AMPM
  1274.         SUBJECT                         JULIAN
  1275.  
  1276.  
  1277.     The literals UPPER, LOWER and MIX are not actual variables, but
  1278.     modifiers.  They will convert the case of the NEXT variable
  1279.     replacement to either all upper, all lower or mixed case, respectively.
  1280.     Mixed case basically lower cases all letters except the first letter
  1281.     of each word.  See the example above for more detail.
  1282.  
  1283. o   GREATER CHICAGO Online BBS is now offering a service called the
  1284.     "OS/2 Shareware Author Support Program".  They are willing to handle
  1285.     Visa/Mastercard charges for shareware authors.  Starting immediately,
  1286.     MR/2 may be registered by "charging" it!  You can register online by
  1287.     calling Greater Chicago Online BBS at (708) 895-4042.  Alternatively,
  1288.     you can provide your charge card information to me directly on the
  1289.     MR/2 registration form provided (register.doc).  There is a $2.00
  1290.     handling fee associated with all charged registrations, making the
  1291.     total charged registration cost $22.00 US for domestic orders.
  1292.  
  1293.     Shareware authors may get more information on the OS/2 Shareware
  1294.     Author Support Program by calling the GREATER CHICAGO Online BBS at
  1295.     the number above (leave a note to the sysop) or by Compuserve mail
  1296.     at 70404,3277.  Fidonet netmail can be sent to Bill Cook at 1:115/895.
  1297.  
  1298.  
  1299. Changes included in v1.41x
  1300. --------------------------
  1301.  
  1302. o   Template file processor would lockup if the named template file did
  1303.     not exist.  Same ZTC bug where fopen() doesn't return NULL on error.
  1304.     Fixed with a call to my file_size() function.
  1305.  
  1306. o   Taglines now are filtered for variables (e.g., @FROM@).
  1307.  
  1308. o   Took template file checking one step further - if file name is
  1309.     empty, processing doesn't even start.
  1310.  
  1311. o   Distribution packets now contain a FILE_ID.DIZ file to help automate
  1312.     BBS description entry.
  1313.  
  1314. o   The initial MR2.INI file now specifies that the INTERNAL editor now
  1315.     be used as the default.  The initial INI editing is still performed
  1316.     inside the E editor.
  1317.  
  1318.  
  1319. Changes included in v1.42x
  1320. --------------------------
  1321.  
  1322. FOLKS!!!:  This is truely a beta ... please save your old working
  1323. MR/2 version before trying this release.  I changed alot of code, and while
  1324. eveything appears to be OK so far ... well, we all know better than to
  1325. get too relaxed, eh? :)
  1326.  
  1327.  
  1328. o   New INI parameters V0 through V9 allow you to set user-defined text
  1329.     strings as template variables.  Uses of the strings @V0@ through @V9@
  1330.     in the tenplate file will be replced with the corresponding defined
  1331.     text string.
  1332.  
  1333.     These variables can contain any other variables, including other "V"
  1334.     variables.  This allows for a template to be defined with an
  1335.     attribution line of @V0@, for example, and this line can be changed
  1336.     for each BBS by defining different values to V0 in the BBSs local
  1337.     INI file.  The variable replacement is recursive, so any number of
  1338.     replacemnet levels is possible.  It's also possible to confuse the
  1339.     system by circularly defining variables.  My rule:  keep it where
  1340.     it's understandable.
  1341.  
  1342.     For example, if you add a line to MR2.INI that says "V0=1:157/200"
  1343.     and your template file starts "...writing from Fidonet address @V0@",
  1344.     the fidonet node address will be placed in the reply.
  1345.  
  1346. o   New INI parameters "INTERNET" and "NETMAIL".  Use these variables to
  1347.     declare which conferences, if any, handle Internet mail and Fidonet
  1348.     netmail, respectively.  For example, PC-Ohio has Internet mail in
  1349.     conference 5 and Fidonet netmail in conference 6.  My PC-OHIO.INI
  1350.     file has:
  1351.  
  1352.     Internet=5
  1353.     Netmail=6
  1354.  
  1355.     Nerd' Nook has Netmail in conference in 139 and no Internet capabilities.
  1356.     My NerdNook.INI file has the lines:
  1357.  
  1358.     Internet=-1
  1359.     Netmail=139
  1360.  
  1361.     The "-1" tells MR/2 that there is no Internet support, and makes sure
  1362.     that the Internet section template is not referenced.
  1363.  
  1364. o   New variables @INTERNET@ and @FIDONET@.  The INTERNET variable will
  1365.     be replaced with the "Reply-to:" address found in Internet mail.  The
  1366.     target address will be stripped of extra verbage and should represent
  1367.     a correct and "ready-to-go" internet address.  The FIDONET variable
  1368.     will be replaced with the full Fidonet address found in the origin
  1369.     line of the current message.  If either one of these variable can
  1370.     not be resolved, then an empty string is substituted.
  1371.  
  1372.     These variables are meant to be used for personal mail addressing
  1373.     using template "sections".  See next blurb.
  1374.  
  1375. o   Sections in the template file `Internet` and `Netmail`.  You may now
  1376.     allocate "sections" within the template file.  Sections are denoted
  1377.     and named by a string between "accept" characters (`).  The first
  1378.     template file section has no name and will be refered to as the
  1379.     "default" section.  A section ends at the next section name string,
  1380.     or at the end of the file.
  1381.  
  1382.     When replying to messages targeted for a conference declared to
  1383.     be the INTERNET or NETMAIL conferences, MR/2 will switch template
  1384.     sections to the corresponding section.  If ever a section is not found
  1385.     (by name matching), the default section is used.
  1386.  
  1387.     This allows for Fidonet netmail and Internet mail to have templates
  1388.     that correctly set up destination addressing.  See the file Example.tf
  1389.     for examples of sections.
  1390.  
  1391. o   Mods to reply creation ... removed the beginning CR/LF when creating
  1392.     the reply file.  Made changes to the way the template file handled
  1393.     CR/LF spacing.  Template file's allignment matches reply files
  1394.     better now (line spacing/blank lines).
  1395.  
  1396. o   When replying and the FROM user name is an Internet made-up name with
  1397.     periods imbedded, MR/2 nulls-out the quoting initials.  The quoted text
  1398.     is simply marked with whatever symbol is defined in the INI, usually
  1399.     a ">" (no initials preceed the ">").
  1400.  
  1401. o   Oh boy.  I modified the Save Reply logic of my QWK class.  This is
  1402.     dangerous, simply because it changes the way replies are saved.  I'll
  1403.     test it thoroughly before letting it out.  *Please* report any problems
  1404.     to me quickly.
  1405.  
  1406.     The change comes when splitting messages (it may effect more, my hope
  1407.     is that it doesn't :).  IF you're in sending Internet mail or Netmail,
  1408.     the message "header" will be copied to each split section.  In most
  1409.     cases, this will be the correct function.  There may be cases where
  1410.     it isn't.  Yell at me and I'll make it configurable.  In other words,
  1411.     netmail or internet mail that's split will be addressed properly for
  1412.     all "parts" if addressing is done on the first line(s) of the message.
  1413.  
  1414. o   When replying into the Fidonet netmail conference, the source message
  1415.     is first checked to see if the first line starts "From:".  If so, and
  1416.     what follows appears to be a Fidonet node designation (it has a ":" and
  1417.     a "/"), then this is used as the value of the FIDONET variable.
  1418.     If not found, the origin line is found.  In netmail messages (the ones
  1419.     I receive at least), there is no origin line, just a "From:" identifier
  1420.     on the very first line of the message.
  1421.  
  1422.  
  1423. Changes included in v1.43x
  1424. --------------------------
  1425.  
  1426. FOLKS:  Same as before ... 1.42 was kept *very* internal.  This version
  1427. is still beta stuff.
  1428.  
  1429. o   Started coding of a REXX script to handle detection of the archiver
  1430.     used to pack the mail packet.  A code is returned that will be used to
  1431.     branch to the correct command for unpacking.  To me, this is the ideal
  1432.     solution, as it is forever extensible.  I've got a scheme for a packer
  1433.     script (for replies) that will match the unpacker used.  I'm new to
  1434.     REXX coding (this was the perfect excuse to get my feet wet :), so
  1435.     if anyone wants to make improvements and/or enhancements, I'll welcome
  1436.     them.  (file is named Unqwk.cmd)
  1437.  
  1438. o   Create msg2rep.cmd - a REXX script for packing replies into a .rep
  1439.     file based on the method used to unpack the original packet.  The source
  1440.     packet *must* have been unpacked with unqwk.cmd (or, at least, the file
  1441.     "archiver.id" must exist and identify the correct packer to use).  This
  1442.     script opens up "archiver.id" and extracts the id number.  Based on that
  1443.     number, a branch is made to the correct packet command.
  1444.  
  1445.     NOTE:  You may have to modify these files a tad IF your archivers
  1446.     are not in your "PATH" environment variable.
  1447.  
  1448.     NOTE:  These command are useful if you use multiple packet sources
  1449.     (BBS's) that use different compression techniques.  If you can get
  1450.     by with a single zipper/unzipper command, the "old" way is OK, and
  1451.     in fact, still more efficient.  These new files simply provide
  1452.     additional flexibility for those that frequent a variety of BBS's and
  1453.     need this functionality.
  1454.  
  1455.     INSTALLATION:  Modify your MR2.INI file to declare:
  1456.  
  1457.         Zipper=..\msg2rep
  1458.         Unzipper=..\unqwk
  1459.  
  1460.     the default .cmd files depend on all archivers being in your "path".
  1461.     If not, you may modify the path = '' statement at the top of each
  1462.     file to reflect the correct path, or modify each zipper command
  1463.     separately to reflect each's valid path.
  1464.  
  1465. o   INTERNAL: packet_exists() now returns TRUE+1 if a .msg file is found
  1466.     in the work directory.
  1467.  
  1468. o   INTERNAL: packet_exists() and remove_packet_exists now use the file
  1469.     name "control.dat" when checking (and removing) packet exist status.
  1470.     If you left a no-packet entry session with ALT-X, then tried to go back
  1471.     in later, MR/2 would not see the existing work (since no messages.dat
  1472.     file ever existed).  Control.dat will always exist if a "packet" is
  1473.     open.
  1474.  
  1475. o   The prompt "Work area has an open packet" has been enhanced.  You may
  1476.     still see this prompt.  However, if the work directory is found to
  1477.     contain replies, the prompt will read "Open packet with REPLIES found".
  1478.  
  1479. o   If an error occurs when unpacking the packet, you will now remain
  1480.     inside MR/2 to select a new packet, or whatever.
  1481.  
  1482. o   IF an error occurs while packing replies, the work directory is *not*
  1483.     purged.  Previously, any error while spawning the packer still let the
  1484.     files be deleted.  What happens now is, after the command error is
  1485.     reported, you're prompted that an open packet with replies exists.  The
  1486.     correct course of action is to go back in the packet (continue working
  1487.     with the open packet) fast exit with ALT-X and correct the zipper
  1488.     problem.
  1489.  
  1490. o   Cleaned up and tested UNQWK.CMD and MSG2REP.CMD.  Made sure error codes
  1491.     were properly returned to MR/2.  Seems to work well with the new error
  1492.     handling described above.
  1493.  
  1494. o   Added new variable @ISUBJECT@ that resolves to the Internet message
  1495.     subject line (often different than the QWK "subject" field).
  1496.     I hope there's a limit to the size of these things ... I only
  1497.     accomodate "realistic" lengths.  We'll see.
  1498.  
  1499. o   Ooops.  New template section logic didn't accomodate new messages
  1500.     created w/o replying.  The template file can now define a section for
  1501.     `NewMessage`.
  1502.  
  1503. o   There was a problem with clearing of search results if there was no
  1504.     local INI when a packet was closed.  Previously, hit counters for custom
  1505.     conferences would not respresent the correct counts (counts would not
  1506.     be cleared for the next packet).  Now, all data is cleared (MR2.INI is
  1507.     always reloaded after a packet is closed).
  1508.  
  1509. o   The INI parameter SplitLongMessages has been enhanced.  YES/NO still
  1510.     function in the old way; YES will cause messages to be split at 92
  1511.     lines (90 lines of message, 2 lines for the <cont..d> footer).  You
  1512.     can now, however, place a number here as an option.  This sets
  1513.     splitting to YES, but modifies the line count cutoff to be the specified
  1514.     value (instead of 92).  This value *must* be greater than or equal
  1515.     to 10 (I've been told of a BBS system that requires no more than 16
  1516.     lines <really!>, so I figure 10 will be a "safe" minimum).  I would
  1517.     suggest using a reasonable number if you need to change the default
  1518.     at all.
  1519.  
  1520.